package com.xyy.service;

import org.springframework.core.io.Resource;
import org.springframework.web.multipart.MultipartFile;

/**
 * 文件服务接口
 */
public interface FileService {
    
    /**
     * 上传头像文件到MinIO
     * @param file 头像文件
     * @return 文件访问URL
     */
    String uploadAvatar(MultipartFile file);
    
    /**
     * 删除头像文件
     * @param fileName 文件名
     */
    void deleteAvatar(String fileName);
    
    /**
     * 检查文件是否为有效的图片
     * @param file 文件
     * @return 是否为有效图片
     */
    boolean isValidImage(MultipartFile file);
    
    /**
     * 上传文件到MinIO
     * @param fileBytes 文件字节数组
     * @param filename 文件名
     * @param folder 文件夹名称
     * @return 文件访问URL
     */
    String uploadFile(byte[] fileBytes, String filename, String folder);
    
    /**
     * 上传活动封面到MinIO
     * @param file 封面文件
     * @return 文件访问URL
     */
    String uploadCover(MultipartFile file);
    
    /**
     * 删除活动封面文件
     * @param fileName 文件名
     */
    void deleteCover(String fileName);
    
    /**
     * 生成预签名URL
     * @param objectName 对象名
     * @param folder 文件夹名称
     * @return 预签名URL
     */
    String generatePresignedUrl(String objectName, String folder);
    
    /**
     * 从URL中提取对象名
     * @param url 文件URL
     * @return 对象名
     */
    String extractObjectNameFromUrl(String url);
    
    /**
     * 获取文件资源
     * @param filename 文件名
     * @param folder 文件夹名称
     * @return 文件资源
     */
    Resource getFile(String filename, String folder);
} 